#include <REGX52.H>

/////////////////////////////////////////////////////////////////
//                    欲使用此PRO版                            //
//               需使用定时器(控制为20ms)                      //
/////////////////////////////////////////////////////////////////

unsigned char Key_KeyNumber;//中间的缓存变量

/*****************************************************************************/

/**
  * @brief   获取键码
  * @param   无
  * @retval  按下的键码，范围：0,1~4,0表示无按键按下
  */
unsigned char Key()
{
	unsigned char Temp = 0;
	Temp = Key_KeyNumber;
	Key_KeyNumber = 0;
	return Temp;
}

/*****************************************************************************/

/**
  * @brief  获取当前按键的状态，松手检测且无消抖
  * @param  无
  * @retval 按下按键的键码，范围：0~4，无按键按下时返回值为0
  */
unsigned char Key_GetState()
{
	unsigned char KeyNumber=0;
	
	if(P3_1==0){KeyNumber=1;}
	if(P3_0==0){KeyNumber=2;}
	if(P3_2==0){KeyNumber=3;}
	if(P3_3==0){KeyNumber=4;}
	
	return KeyNumber;
}

/*****************************************************************************/

/**
  * @brief   按键驱动函数，在 中断 中调用
  * @param  无
  * @retval 无 
  */
void Key_Loop()
{
	static unsigned char NowState = 0;
	static unsigned char LastState = 0;
	LastState = NowState;     //状态
	NowState = Key_GetState();//更新
	if (1 == LastState && 0 == NowState)
	{
		Key_KeyNumber = 1;
	}
	if (2 == LastState && 0 == NowState)
	{
		Key_KeyNumber = 2;
	}
	if (3 == LastState && 0 == NowState)
	{
		Key_KeyNumber = 3;
	}
	if (4 == LastState && 0 == NowState)
	{
		Key_KeyNumber = 4;
	}
}

/*****************************************************************************/



















